home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # Copyright 1994,2002 David C. Niemi.
- # Copyright 1996,1997,2001-2003 Alain Knaff.
- # This file is part of mtools.
- #
- # Mtools is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # Mtools is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with Mtools. If not, see <http://www.gnu.org/licenses/>.
- # uz [file...]
- # lz [file...]
- #
- # If called "uz", gunzips and extracts a gzip'd tar'd archive.
- # If called "lz", gunzips and shows a listing of a gzip'd tar'd archive.
- #
- # Requires: gzip and tar in the user's path. Should work with most tars.
- # "-" is now used for backwards compatibility with antique tars, e.g. SCO.
- #
- # 1994/02/19 DCN Created (as a trivial, but useful script)
- # 1994/12/01 DCN Combined uz and lz, added suffix handling
- # 2002/09/11 DCN Added bzip2 support
- #
- # Copyright (C) 1994, 2002 David C. Niemi (niemi at tuxers dot net)
- # The author requires that any copies or derived works include this
- # copyright notice; no other restrictions are placed on its use.
- #
-
- set -e
- set -u
-
- ## Default unzipping command
- uzcmd='gzip -cd'
-
- case $0 in
- *uz)
- tarparam="-pxvf"
- action="Extracting from "
- ;;
- *lz)
- tarparam="-tvf"
- action="Reading directory of "
- ;;
- *)
- echo "$0: expect to be named either \"uz\" or \"lz\"." >&2
- exit 1
- ;;
- esac
-
- if [ $# = 0 ]; then
- echo "$action standard input." >&2
- $uzcmd - | tar "$tarparam" -
- exit 0
- fi
-
- while [ $# -ge 1 ]; do
- echo >&2
- found=
-
- for suffix in "" .gz .tgz .tar.gz .z .tar.z .taz .tpz .Z .tar.Z .tar.bz2; do
- if [ -r "${1}$suffix" ]; then
- found=$1$suffix
- break
- fi
- done
-
- case $found in
- *.tar.bz2 | *.tb2)
- uzcmd='bzip2 -cd'
- ;;
- esac
- if [ -z "$found" ]; then
- echo "$0: could not read \"$1\"." >&2
- else
- echo "$action \"$found\"." >&2
- $uzcmd -- "$found" | tar "$tarparam" -
- fi
- shift
- done
-
- exit 0
-